অ্যারে এবং স্ট্রিং সি++ এ দুটি গুরুত্বপূর্ণ ডেটা স্ট্রাকচার, যা একাধিক ডেটা উপাদান সংরক্ষণ করতে ব্যবহৃত হয়। অ্যারে একই ধরনের ডেটার সংগ্রহ এবং স্ট্রিং অক্ষরের সংগ্রহ।
অ্যারে হলো একই ধরনের একাধিক উপাদান সংরক্ষণের জন্য নির্ধারিত একটি ডেটা স্ট্রাকচার। এটি এক ধরনের সংগ্রহ, যেখানে প্রতিটি উপাদান নির্দিষ্ট একটি সূচকের মাধ্যমে অ্যাক্সেস করা যায়।
data_type array_name[array_size];
#include <iostream>
using namespace std;
int main() {
int numbers[5] = {10, 20, 30, 40, 50}; // একটি ইন্টিজার অ্যারে ঘোষণা ও ইনিশিয়ালাইজেশন
// অ্যারের মান প্রদর্শন করা
for (int i = 0; i < 5; i++) {
cout << "Element at index " << i << ": " << numbers[i] << endl;
}
return 0;
}
বর্ণনা:
numbers
নামে একটি ইন্টিজার টাইপের অ্যারে রয়েছে, যার মধ্যে ৫টি উপাদান সংরক্ষিত আছে।for
লুপ ব্যবহার করে প্রতিটি উপাদান প্রদর্শন করা হয়েছে।স্ট্রিং হলো অক্ষরের একটি সংগ্রহ, যা সাধারণত char
টাইপের অ্যারে হিসাবে সংরক্ষিত হয়। তবে, সি++ এ স্ট্রিং পরিচালনার জন্য string
নামে একটি ডেটা টাইপ রয়েছে যা C++ স্ট্যান্ডার্ড লাইব্রেরিতে অন্তর্ভুক্ত।
string
ডেটা টাইপ ব্যবহার করলে স্ট্রিংয়ের আকার প্রোগ্রাম চলাকালীন সময়ে পরিবর্তন করা যায়।#include <iostream>
#include <string>
using namespace std;
int main() {
string greeting = "Hello, World!"; // স্ট্রিং ইনিশিয়ালাইজেশন
cout << greeting << endl; // স্ট্রিং আউটপুট
return 0;
}
C++ এ স্ট্রিং সংরক্ষণের আরেকটি উপায় হলো char
টাইপের অ্যারে ব্যবহার করা, যাকে C স্টাইল স্ট্রিং বলা হয়।
#include <iostream>
using namespace std;
int main() {
char name[] = "Alice"; // C স্টাইল স্ট্রিং
cout << "Name: " << name << endl;
return 0;
}
সংখ্যা যোগফল নির্ধারণ: অ্যারের উপাদানগুলো যোগ করে মোট যোগফল নির্ধারণ করা।
int sum = 0;
for (int i = 0; i < 5; i++) {
sum += numbers[i];
}
cout << "Sum of array elements: " << sum << endl;
C++ এর string
ডেটা টাইপে বেশ কিছু অপারেশন করা যায়, যেমন:
স্ট্রিং দৈর্ঘ্য: .length()
ফাংশন ব্যবহার করে স্ট্রিংয়ের দৈর্ঘ্য জানা যায়।
cout << "Length of greeting: " << greeting.length() << endl;
স্ট্রিং একত্রিত করা (Concatenate): +
অপারেটর ব্যবহার করে দুটি স্ট্রিং একত্রিত করা যায়।
string firstName = "John";
string lastName = "Doe";
string fullName = firstName + " " + lastName;
cout << "Full Name: " << fullName << endl;
স্ট্রিং সাবস্ট্রিং: .substr()
ফাংশন ব্যবহার করে স্ট্রিংয়ের একটি অংশ পাওয়া যায়।
cout << "Substring: " << greeting.substr(0, 5) << endl; // Output: Hello
স্ট্রিং চরিত্র অ্যাক্সেস: []
অপারেটর ব্যবহার করে নির্দিষ্ট ইনডেক্সের চরিত্র অ্যাক্সেস করা যায়।
cout << "First character of greeting: " << greeting[0] << endl; // Output: H
বৈশিষ্ট্য | অ্যারে | স্ট্রিং |
---|---|---|
ডেটা টাইপ | একই ধরনের ডেটা ধারণ করে | অক্ষরের সংগ্রহ, স্ট্রিং লাইব্রেরি ফাংশন সহ |
আকার পরিবর্তন | স্থির আকার, পরিবর্তন করা যায় না | আকার পরিবর্তনযোগ্য (string ব্যবহার করলে) |
ব্যবহার | সংখ্যাসহ বিভিন্ন ধরনের ডেটা সংরক্ষণে | সাধারণত অক্ষর ও শব্দ সংরক্ষণে ব্যবহৃত |
অ্যারে সি++ এ একাধিক ডেটা উপাদান সংরক্ষণের জন্য ব্যবহৃত হয় এবং প্রতিটি উপাদান সূচক দ্বারা অ্যাক্সেস করা যায়। স্ট্রিং হলো অক্ষরের একটি সংগ্রহ, যা string
ডেটা টাইপ বা char
অ্যারে ব্যবহার করে সংরক্ষণ করা যায়। স্ট্রিং ম্যানিপুলেশনের জন্য string
ক্লাসে অনেক বিল্ট-ইন ফাংশন রয়েছে যা স্ট্রিংকে আরও সহজে পরিচালনা করতে সাহায্য করে।
অ্যারে (Array) হলো এক ধরনের ডেটা স্ট্রাকচার, যা একই ধরনের একাধিক ডেটা উপাদান (যেমন পূর্ণসংখ্যা, দশমিক সংখ্যা বা স্ট্রিং) ধারন করতে ব্যবহৃত হয়। অ্যারে ব্যবহার করলে একাধিক ডেটা উপাদানকে একটি মাত্র ভ্যারিয়েবলের মাধ্যমে পরিচালনা করা সম্ভব হয়, যা কোডকে সংক্ষিপ্ত এবং কার্যকরী করে তোলে।
অ্যারে ঘোষণা করার সময় ডেটা টাইপ, অ্যারের নাম এবং অ্যারের আকার নির্ধারণ করতে হয়।
data_type array_name[array_size];
উদাহরণ:
int numbers[5]; // 5টি পূর্ণসংখ্যা ধারণকারী একটি অ্যারে
অ্যারের ইনিশিয়ালাইজেশন করার সময় নির্দিষ্ট মান প্রদান করা হয়।
int numbers[5] = {1, 2, 3, 4, 5}; // ৫টি উপাদান বিশিষ্ট একটি পূর্ণসংখ্যা অ্যারে
অথবা:
int numbers[] = {1, 2, 3, 4, 5}; // আকার নির্ধারণ না করলেও C++ স্বয়ংক্রিয়ভাবে অ্যারের আকার নির্ধারণ করবে
অ্যারের উপাদান অ্যাক্সেস করতে ইনডেক্স ব্যবহার করা হয়। ইনডেক্স ০ (শূন্য) থেকে শুরু হয়, তাই numbers[0]
অ্যারের প্রথম উপাদানকে নির্দেশ করে।
#include <iostream>
using namespace std;
int main() {
int numbers[5] = {10, 20, 30, 40, 50};
cout << "First element: " << numbers[0] << endl; // 10
cout << "Second element: " << numbers[1] << endl; // 20
cout << "Third element: " << numbers[2] << endl; // 30
return 0;
}
অ্যারে সাধারণত লুপের মাধ্যমে অ্যাক্সেস করা হয়, বিশেষত যখন অ্যারে বড় হয়। নিচের উদাহরণে for
লুপ ব্যবহার করে একটি অ্যারের সব উপাদান প্রিন্ট করা হয়েছে।
#include <iostream>
using namespace std;
int main() {
int numbers[5] = {10, 20, 30, 40, 50};
for (int i = 0; i < 5; i++) {
cout << "Element at index " << i << ": " << numbers[i] << endl;
}
return 0;
}
বর্ণনা:
for
লুপ ব্যবহার করে অ্যারের প্রতিটি উপাদান অ্যাক্সেস করা হয়েছে এবং numbers[i]
দ্বারা প্রতিটি উপাদান প্রিন্ট করা হয়েছে।অ্যারের ব্যবহার বিভিন্ন ক্ষেত্রে গুরুত্বপূর্ণ, বিশেষ করে যখন একাধিক ডেটা উপাদান একই ধরনের এবং তাদের একসঙ্গে সংরক্ষণ করতে হয়।
#include <iostream>
using namespace std;
int main() {
int marks[5] = {85, 90, 78, 88, 76};
int sum = 0;
for (int i = 0; i < 5; i++) {
sum += marks[i];
}
double average = sum / 5.0;
cout << "Average marks: " << average << endl;
return 0;
}
বর্ণনা:
marks
নামে একটি অ্যারে ঘোষণা করা হয়েছে, যাতে ৫টি উপাদান রয়েছে। লুপের মাধ্যমে এই উপাদানগুলোর যোগফল বের করা হয়েছে এবং শেষে গড় মান প্রিন্ট করা হয়েছে।#include <iostream>
using namespace std;
int main() {
int numbers[5];
cout << "Enter 5 numbers: ";
for (int i = 0; i < 5; i++) {
cin >> numbers[i];
}
cout << "You entered: ";
for (int i = 0; i < 5; i++) {
cout << numbers[i] << " ";
}
cout << endl;
return 0;
}
বর্ণনা:
cin
এবং cout
ব্যবহার করে এই কাজটি করা হয়েছে।C++ এ একাধিক স্তরের (dimensions) অ্যারে তৈরি করা যায়, যেমন টু-ডাইমেনশনাল অ্যারে, যা ম্যাট্রিক্স বা টেবিল আকারে ডেটা সংরক্ষণ করতে সাহায্য করে।
#include <iostream>
using namespace std;
int main() {
int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}};
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
cout << "Element at [" << i << "][" << j << "]: " << matrix[i][j] << endl;
}
}
return 0;
}
বর্ণনা:
অ্যারের মাধ্যমে প্রোগ্রামে ডেটা ম্যানিপুলেশন এবং বিভিন্ন ডেটা পরিচালনা সহজ এবং কার্যকর হয়।
সি++ এ অ্যারে হলো একটি ডেটা স্ট্রাকচার যা একই ধরনের একাধিক উপাদান সংরক্ষণ করতে ব্যবহৃত হয়। এটি সাধারণত দুটি প্রকারে ভাগ করা হয়: একমাত্রিক অ্যারে এবং বহু-মাত্রিক অ্যারে।
একমাত্রিক অ্যারে হলো এমন একটি অ্যারে, যার প্রতিটি উপাদান একটি মাত্র সূচক বা ইনডেক্স দ্বারা অ্যাক্সেস করা যায়। এটি সাধারণত একটি সরল লাইনে একত্রে সংরক্ষিত ডেটার একটি তালিকা।
data_type array_name[array_size];
#include <iostream>
using namespace std;
int main() {
int numbers[5] = {10, 20, 30, 40, 50}; // ৫টি উপাদান বিশিষ্ট একমাত্রিক অ্যারে
// অ্যারের মান প্রদর্শন করা
for (int i = 0; i < 5; i++) {
cout << "Element at index " << i << ": " << numbers[i] << endl;
}
return 0;
}
বর্ণনা:
numbers
নামে একটি int
টাইপের অ্যারে রয়েছে যার আকার ৫ এবং ইনডেক্স ০ থেকে শুরু হয়।numbers[i]
ফর্মেটে অ্যাক্সেস করা হয়।বহু-মাত্রিক অ্যারে হলো এমন একটি অ্যারে, যেখানে প্রতিটি উপাদান একাধিক সূচক বা ইনডেক্স ব্যবহার করে অ্যাক্সেস করা যায়। সাধারণত ২-মাত্রিক (2D) এবং ৩-মাত্রিক (3D) অ্যারে বেশি ব্যবহৃত হয়।
২-মাত্রিক অ্যারে একটি সারি (row) ও কলাম (column) ভিত্তিক অ্যারে। একে ম্যাট্রিক্স বা টেবিলের মতো দেখতে।
গঠন
data_type array_name[rows][columns];
উদাহরণ
#include <iostream>
using namespace std;
int main() {
int matrix[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// ২-মাত্রিক অ্যারের উপাদান প্রদর্শন
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
return 0;
}
বর্ণনা:
matrix
নামে একটি ৩x৩ আকারের ২-মাত্রিক অ্যারে আছে।matrix[i][j]
ফর্মেটে প্রতিটি উপাদান অ্যাক্সেস করা হয়, যেখানে i
হলো সারি এবং j
হলো কলাম।৩-মাত্রিক অ্যারে একাধিক স্তরে উপাদান সংরক্ষণ করতে পারে, যেখানে প্রতিটি উপাদান তিনটি ইনডেক্স দ্বারা অ্যাক্সেস করা হয়।
গঠন
data_type array_name[depth][rows][columns];
উদাহরণ
#include <iostream>
using namespace std;
int main() {
int cube[2][2][2] = {
{{1, 2}, {3, 4}},
{{5, 6}, {7, 8}}
};
// ৩-মাত্রিক অ্যারের উপাদান প্রদর্শন
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
for (int k = 0; k < 2; k++) {
cout << "cube[" << i << "][" << j << "][" << k << "] = " << cube[i][j][k] << endl;
}
}
}
return 0;
}
বর্ণনা:
cube
নামে একটি ২x২x২ আকারের ৩-মাত্রিক অ্যারে আছে।cube[i][j][k]
ফর্মেটে প্রতিটি উপাদান অ্যাক্সেস করা হয়, যেখানে i
স্তর, j
সারি এবং k
কলাম নির্দেশ করে।বৈশিষ্ট্য | একমাত্রিক অ্যারে | বহু-মাত্রিক অ্যারে |
---|---|---|
গঠন | একটিমাত্র ইনডেক্স দ্বারা অ্যাক্সেস | একাধিক ইনডেক্স দ্বারা অ্যাক্সেস |
ব্যবহার | সরল ডেটা তালিকা সংরক্ষণে | টেবিল, ম্যাট্রিক্স, এবং জটিল কাঠামো সংরক্ষণে |
দৃষ্টান্ত | int arr[5]; | int arr[3][3]; , int arr[2][2][2]; |
একমাত্রিক অ্যারে হলো একই ধরনের ডেটা সংরক্ষণের সরল একটি সংগ্রহ, যা শুধুমাত্র একটি ইনডেক্স ব্যবহার করে অ্যাক্সেস করা যায়। বহু-মাত্রিক অ্যারে হলো টেবিল বা ম্যাট্রিক্স আকারে ডেটা সংরক্ষণের একটি পদ্ধতি, যেখানে একাধিক ইনডেক্স ব্যবহার করে উপাদানগুলো অ্যাক্সেস করা যায়। সি++ এ এই দুটি অ্যারের মাধ্যমে বড় আকারের ডেটা সংগঠিতভাবে সংরক্ষণ এবং পরিচালনা করা যায়।
স্ট্রিং (string) হলো অক্ষরের একটি ক্রম, যা C++ প্রোগ্রামিংয়ে পাঠ্য তথ্য সংরক্ষণ ও পরিচালনার জন্য ব্যবহৃত হয়। C++ এ স্ট্রিং ব্যবহারের জন্য দুটি প্রধান পদ্ধতি রয়েছে:
string.h
লাইব্রেরি ব্যবহার করে।string
ক্লাস, যা <string>
হেডার ফাইল ব্যবহার করে।string.h
লাইব্রেরিC-স্টাইল স্ট্রিং মূলত অক্ষরের একটি অ্যারে হিসাবে সংরক্ষিত হয়, এবং এটি \0
(null character) দিয়ে শেষ হয়। C++ এ string.h
(বা cstring
) লাইব্রেরি C-স্টাইল স্ট্রিং পরিচালনার জন্য বিভিন্ন ফাংশন সরবরাহ করে, যেমন strlen
, strcpy
, strcmp
, ইত্যাদি।
#include <iostream>
#include <cstring> // string.h এর পরিবর্তে cstring ব্যবহার করা হচ্ছে
using namespace std;
int main() {
char str1[20] = "Hello";
char str2[20] = "World";
// স্ট্রিং লম্বা নির্ণয়
cout << "Length of str1: " << strlen(str1) << endl;
// স্ট্রিং অনুলিপি করা
strcpy(str1, str2);
cout << "After copying, str1: " << str1 << endl;
// স্ট্রিং মিলানো
if (strcmp(str1, str2) == 0) {
cout << "str1 and str2 are equal" << endl;
} else {
cout << "str1 and str2 are not equal" << endl;
}
return 0;
}
string.h
লাইব্রেরির প্রধান ফাংশনসমূহফাংশন | কাজ |
---|---|
strlen | স্ট্রিংয়ের দৈর্ঘ্য নির্ণয় করে |
strcpy | একটি স্ট্রিং অন্য স্ট্রিংয়ে অনুলিপি করে |
strcat | দুটি স্ট্রিং যোগ করে |
strcmp | দুটি স্ট্রিং তুলনা করে |
strncpy | নির্দিষ্ট সংখ্যক অক্ষর একটি স্ট্রিং থেকে অন্য স্ট্রিংয়ে অনুলিপি করে |
strstr | একটি স্ট্রিংয়ের মধ্যে অন্য একটি স্ট্রিং অনুসন্ধান করে |
strlen
, strcpy
, এবং strcmp
এর ব্যবহার#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str1[] = "Programming";
char str2[20];
// strlen ব্যবহার করে স্ট্রিংয়ের দৈর্ঘ্য নির্ণয়
cout << "Length of str1: " << strlen(str1) << endl;
// strcpy ব্যবহার করে স্ট্রিং অনুলিপি
strcpy(str2, str1);
cout << "Copied str2: " << str2 << endl;
// strcmp ব্যবহার করে স্ট্রিং তুলনা
if (strcmp(str1, str2) == 0) {
cout << "str1 and str2 are equal." << endl;
} else {
cout << "str1 and str2 are not equal." << endl;
}
return 0;
}
string
ক্লাস এবং <string>
লাইব্রেরিC++ এ string
ক্লাস ব্যবহার করে স্ট্রিং পরিচালনা করা আরও সহজ এবং কার্যকর। এটি <string>
হেডার ফাইল অন্তর্ভুক্ত করে ব্যবহৃত হয় এবং C++ এর স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরির (STL) অংশ।
string
ক্লাস উদাহরণ#include <iostream>
#include <string> // C++ string লাইব্রেরি
using namespace std;
int main() {
string str1 = "Hello";
string str2 = "World";
// স্ট্রিং যোগ করা
string str3 = str1 + " " + str2;
cout << "Concatenated string: " << str3 << endl;
// স্ট্রিং দৈর্ঘ্য
cout << "Length of str3: " << str3.length() << endl;
// সাবস্ট্রিং খুঁজে বের করা
cout << "Substring of str3: " << str3.substr(0, 5) << endl;
// স্ট্রিং তুলনা
if (str1 == str2) {
cout << "str1 and str2 are equal." << endl;
} else {
cout << "str1 and str2 are not equal." << endl;
}
return 0;
}
string
ক্লাসের প্রধান ফাংশনসমূহফাংশন | কাজ |
---|---|
length | স্ট্রিংয়ের দৈর্ঘ্য নির্ণয় করে |
size | স্ট্রিংয়ের দৈর্ঘ্য নির্ণয় করে (length এর সমতুল্য) |
empty | স্ট্রিং খালি কিনা তা পরীক্ষা করে |
substr | সাবস্ট্রিং প্রদান করে |
find | স্ট্রিংয়ের মধ্যে নির্দিষ্ট সাবস্ট্রিং অনুসন্ধান করে |
append | স্ট্রিংয়ের শেষে আরও স্ট্রিং যোগ করে |
compare | দুটি স্ট্রিং তুলনা করে |
clear | স্ট্রিং খালি করে |
replace | স্ট্রিংয়ের নির্দিষ্ট অংশ প্রতিস্থাপন করে |
length
, substr
, এবং find
এর ব্যবহার#include <iostream>
#include <string>
using namespace std;
int main() {
string text = "Welcome to C++ Programming";
// স্ট্রিং দৈর্ঘ্য
cout << "Length of text: " << text.length() << endl;
// সাবস্ট্রিং তৈরি
string subText = text.substr(11, 3); // "C++" অংশটি খুঁজে বের করে
cout << "Substring: " << subText << endl;
// স্ট্রিংয়ের মধ্যে নির্দিষ্ট শব্দ খোঁজা
size_t position = text.find("C++");
if (position != string::npos) {
cout << "'C++' found at position: " << position << endl;
} else {
cout << "'C++' not found." << endl;
}
return 0;
}
বর্ণনা:
text.length()
: স্ট্রিংয়ের দৈর্ঘ্য নির্ধারণ করে।text.substr(11, 3)
: text
স্ট্রিং থেকে ১১ নম্বর অবস্থান থেকে ৩টি অক্ষরের সাবস্ট্রিং খুঁজে বের করে।text.find("C++")
: text
স্ট্রিংয়ের মধ্যে "C++"
শব্দটি অনুসন্ধান করে।string
ক্লাসবৈশিষ্ট্য | C-স্টাইল স্ট্রিং (string.h ) | C++ string ক্লাস |
---|---|---|
ঘোষণার ধরন | ক্যারেক্টার অ্যারের উপর ভিত্তি করে | string ক্লাস অবজেক্ট |
কার্যকারিতা | সীমিত কার্যকারিতা | বিভিন্ন ধরনের কার্যকরী ফাংশন প্রদান |
পরিচালনা | ম্যানুয়াল অপারেশন প্রয়োজন | স্ট্যান্ডার্ড লাইব্রেরির মাধ্যমে সহজ |
ব্যবহারিক ক্ষেত্রে | সি এবং কমপ্যাটিবিলিটির জন্য | C++ প্রোগ্রামিংয়ে আরও সুবিধাজনক |
string.h
বা cstring
লাইব্রেরি ব্যবহার করে এবং ক্যারেক্টার অ্যারের উপর ভিত্তি করে তৈরি।string
ক্লাস C++ এ স্ট্রিং ব্যবহারের জন্য আরও সুবিধাজনক এবং <string>
হেডার ফাইল অন্তর্ভুক্ত করে।string
ক্লাস ব্যবহার করে স্ট্রিং পরিচালনা করা সহজ এবং স্ট্রিং নিয়ে কাজ করার জন্য অনেক ফাংশন রয়েছে, যা প্রোগ্রামিংকে আরও কার্যকর এবং সহজ করে তোলে।C++ প্রোগ্রামিংয়ে স্ট্রিং নিয়ে কাজ করার সময় সাধারণত C++ string
ক্লাস ব্যবহারের পরামর্শ দেওয়া হয়, কারণ এটি আরো সুবিধাজনক এবং আধুনিক প্রোগ্রামিং পদ্ধতিতে বেশি কার্যকর।
common.read_more